﻿using System;
using System.Collections.Generic;

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;

namespace Fjaspx.UI.Web.Admin.Control
{
    public partial class Pager : System.Web.UI.UserControl
    {
        private string _UrlFormat;
        private int _PageSize = 20;
        private int _RecordCount;
        private int _PageCount = 5;
        /// <summary>
        /// 可分页数据源
        /// </summary>
        //public PagedDataSource pds
        //{
        //    set { _pds = value; }
        //    get { return _pds; }
        //} 
        public string UrlFormat
        {
            get
            {
                return _UrlFormat;
            }
            set
            {
                _UrlFormat = value;
            }
        }

        /**/
        /// <summary>
        /// 页长度

        /// </summary>
        public int PageSize
        {
            get
            {
                return _PageSize;
            }
            set
            {
                _PageSize = value;
            }
        }
        /**/
        /// <summary>
        /// 当前页码
        /// </summary>
        public int PageIndex
        {
            get
            {
                string Pageindex = HttpContext.Current.Request.QueryString["i"];
                if (Pageindex != null)
                {
                    return int.Parse(Pageindex);
                }
                return 1;
            }
        }

        /**/
        /// <summary>
        /// 总记录数
        /// </summary>
        public int RecordCount
        {
            get
            {
                return _RecordCount;
            }
            set
            {
                _RecordCount = value;
            }
        }

        /**/
        /// <summary>
        /// 两边显示个数
        /// </summary>
        public int PageCount
        {
            get
            {
                return _PageCount;
            }
            set
            {
                _PageCount = value;
            }
        }

        protected override void Render(HtmlTextWriter writer)
        {
            if (RecordCount == 0)
                return;
            int SumPage = (RecordCount + PageSize - 1) / PageSize;
            int start = PageIndex - PageCount;
            int end = PageIndex + PageCount;
            //以PageIndex为中心，前后个显示Page个页码导航
            if (SumPage > (PageCount * 2 + 1))
            {
                if (start < 1)
                {
                    start = 1;
                    end = start + 10;
                }
                else if (end > SumPage)
                {
                    start = SumPage - 10;
                    end = SumPage;
                }
            }
            else
            {
                start = 1;
                end = SumPage;
            }
            string serverurl = Request.RawUrl.ToString();
            string tmp = "<a href=\"" + UrlFormat + "\">[{0}]</a>";

            StringBuilder sb = new StringBuilder(string.Format("页次:{0}/{1}  每页:{2}  共计:{3} 条 ", PageIndex, SumPage, PageSize, RecordCount));
            if (PageIndex > 1)
            {
                sb.Append(string.Format("<a href=\"" + UrlFormat + "\">首页</a> ", 1));
                sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">上一页</a> ", PageIndex - 1));
            }
            for (int i = start; i <= end; i++)
            {
                if (i == PageIndex)
                {
                    sb.Append(" <strong>" + PageIndex.ToString() + "</strong> ");
                }
                else
                {
                    sb.Append(string.Format(tmp, i));
                }
                sb.Append("&nbsp;");
            }
            if (PageIndex < SumPage)
            {
                sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">下一页</a> ", PageIndex + 1));
                sb.Append(string.Format(" <a href=\"" + UrlFormat + "\">尾页</a>", SumPage));
            }
            writer.Write(sb.ToString());
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }
    }
}